/**
开始学习并发相关的概念，重点了解并学会使用轻量级线程（goroutine）和通道（channel）。
用学到的知识实现下面的题目：
实现生产者、消费者的并发处理。生产者每2秒钟不断随机生成一个房源信息（使用随机数或者随机字符串代表即可），生产者使用3个goroutine并发运行。然后消费者在main()函数的goroutine中进行处理，打印到屏幕上即可。
 */

package main

import (
	"fmt"
	"time"
	"math/rand"
	"sync"
)

func producer(c chan int, cName int) {
	for {
		rand.Seed(time.Now().UnixNano())
		var i = rand.Intn(1000)
		c <- i
		fmt.Printf("P %d puts, ID is : %d \n", cName, i)
		time.Sleep(2 * time.Second)
	}
}
func consumer(c chan int) {
	for p:= range c{
		fmt.Printf("C gets, ID is : %d \n", p)
		time.Sleep(1200)
	}
}

var wg sync.WaitGroup

func main() {
	c := make(chan int)
	for i:=0; i<3; i++ {
		wg.Add(1)
		go producer(c, i+1)
		wg.Done()
	}
	wg.Wait()
	consumer(c)
}